#include <stdio.h>
#include <stdlib.h>
#include <malloc.h>
#include<iostream> 
using namespace std;
typedef struct node{
   int data;
   struct node *next;
}ListNode;
typedef ListNode *List;
void CreateList(List &L,int n);
void ReverseList(List &L);
void PrintList(List L);

int main()
{
       int n;
      List L;
      cin>>n;
     CreateList(L,n);
     ReverseList(L);
    PrintList(L);

 } 
void CreateList(List &L,int n)
{
	int m;
	node *r,*s;
	L=new node;
	L->next=NULL; 
	r=L;
	for(int i=0;i!=n;i++)
	{
		s=new node;
		cin>>m;
		s->data=m;
		s->next=NULL;
		r->next=s;
        r=s;
	}
}

void PrintList(List L)
{
	if(L->next==NULL)
	printf("NULL");
	node *p=L->next;
	int i=0;
	while(p!=NULL)
	{
		if(i==0)
		{
			printf("%d",p->data);
			p=p->next;
			i++;
		}
		else
		{
			printf(" %d",p->data);
			p=p->next;
		}
	}
	printf("\n");
}
void ReverseList(List &L)
{
	node *p,*q;  
    p=L->next;  
    L->next=NULL;
    while(p!=NULL)  
    {
        q=p->next;
        p->next=L->next;  
        L->next=p;
        p=q;
    }
}

